import BaseCommand from './baseCommand';

class TimerBaseCommand extends BaseCommand {
  // 定时器类型枚举
  static TIMER_TYPE = {
    ONCE: 0,      // 单次
    DAILY: 1,     // 每天
    WEEKLY: 2,    // 每周
    PERIOD: 3     // 时间段
  };

  // 定时器动作枚举
  static TIMER_ACTION = {
    ON: 0,        // 开启
    OFF: 1,       // 关闭
    TOGGLE: 2     // 切换
  };

  /**
   * 打包时间数据
   * @protected
   */
  static packTimeData(config) {
    const data = new Uint8Array(11);
    let offset = 0;

    // 类型和动作
    data[offset++] = config.type;
    data[offset++] = config.action;

    // 时间
    data[offset++] = config.hour;
    data[offset++] = config.minute;
    data[offset++] = config.second || 0;

    // 周掩码
    data[offset++] = config.dayMask || 0;

    // 结束动作(仅时间段模式有效)
    data[offset++] = config.endAction || 0;

    // 结束时间
    data[offset++] = config.endHour || 0;
    data[offset++] = config.endMinute || 0;
    data[offset++] = config.endSecond || 0;

    // 是否启用
    data[offset] = config.enabled ? 1 : 0;

    return data;
  }

  /**
   * 解析时间数据
   * @protected
   */
  static parseTimeData(data) {
    let offset = 0;
    return {
      type: data[offset++],
      action: data[offset++],
      hour: data[offset++],
      minute: data[offset++],
      second: data[offset++],
      dayMask: data[offset++],
      endAction: data[offset++],
      endHour: data[offset++],
      endMinute: data[offset++],
      endSecond: data[offset++],
      enabled: data[offset] === 1
    };
  }
}

export default TimerBaseCommand; 